ARM64/DWC_OTG: Port dwc_otg driver to ARM64
authorMichael Zoran <mzoran@crowfest.net>
Sun, 15 Jan 2017 05:33:51 +0000 (21:33 -0800)
committerRaspbian kernel package updater <root@raspbian.org>
Thu, 15 Feb 2018 17:28:37 +0000 (17:28 +0000)
commite88d2b78d1f6ede03be99f00a651e3b377d7cbc7
tree601f8067f41ee690073c326c04f1ecf24ebc3bff
parentcf959a8c1168c9d3a4763de324b67563e5590ffc
ARM64/DWC_OTG: Port dwc_otg driver to ARM64

In ARM64, the FIQ mechanism used by this driver is not current
implemented.   As a workaround, reqular IRQ is used instead
of FIQ.

In a separate change, the IRQ-CPU mapping is round robined
on ARM64 to increase concurrency and allow multiple interrupts
to be serviced at a time.  This reduces the need for FIQ.

Tests Run:

This mechanism is most likely to break when multiple USB devices
are attached at the same time.  So the system was tested under
stress.

Devices:

1. USB Speakers playing back a FLAC audio through VLC
   at 96KHz.(Higher then typically, but supported on my speakers).

2. sftp transferring large files through the buildin ethernet
   connection which is connected through USB.

3. Keyboard and mouse attached and being used.

Although I do occasionally hear some glitches, the music seems to
play quite well.

Signed-off-by: Michael Zoran <mzoran@crowfest.net>
drivers/usb/host/dwc_otg/Makefile
drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h
drivers/usb/host/dwc_otg/dwc_otg_hcd.c
drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
drivers/usb/host/dwc_otg/dwc_otg_os_dep.h